/**
* Forward Declarations and Global Variables for JDD.
* @file /JDD/JDD_types.hpp
* @author Jacob Dix
**/
#ifndef GAME_TYPES_HPP_INCLUDED
#define GAME_TYPES_HPP_INCLUDED
#include <GQE/Core/classes/ConfigReader.hpp>
#include "JDD.hpp"
#define MAP_WIDTH 10
#define MAP_HEIGHT 10
#define MAP_DEPTH 5
#define PLAYER_ITEMS 20
//Classes
//////////////////////////////
class MapClass;
class PlayerClass;
class ContentManager;
//Structs
//////////////////////////////
struct typeRoom;
struct typeExit
{
    sf::Vector3i Room;//the room it leads too.
    std::string Description;
	bool isOpen;
};
struct typeItemRef;
typedef std::vector<typeItemRef> typeInventory;
struct typeItem
{

    std::string Name;
    std::string Info;
    std::string Grade;
    std::string Type;
    std::string SubType;
    std::string TwoHanded;
    std::string Stackable;
	std::string Power;
};
struct typeItemRef
{
    typeItem Item;
    unsigned int Amount;
	typeInventory* Inventory;
	int Index;
};

struct typeRoom
{
    std::string Description;
    typeExit NorthExit;
    typeExit EastExit;
    typeExit SouthExit;
    typeExit WestExit;
    typeExit UpExit;
    typeExit DownExit;
    bool NonRoom;
    typeInventory Inventory;
};
struct typeDescription
{
    std::string Desciption;
    int Theme;
};
enum typeDirections
{
    NORTH,
    EAST,
    SOUTH,
    WEST,
	DOWN,
	UP
};
enum typeEquipmentSlots
{
	RIGHT_HAND,
	LEFT_HAND,
	BODY,
	ACCESSORY
};
//Global Variables
//////////////////////////////
extern JDD::Console* gMainWindow;
extern int gButtonWidth;
extern int gButtonHeight;
extern GQE::ConfigReader* gConfig;
extern int gLineIndex;
extern int gPrimary;
extern int gCommand;
extern int gOption;
extern MapClass* gMap;
extern PlayerClass* gPlayer;
extern ContentManager* gContent;
extern typeItemRef* gSelectItem;
//Global Funtions
#endif
